package design.template;

/**
 * 抽象模板方法：
 *   类图如下，核心思路是把一些通用的标准方法，在抽象父类里仅定义方法签名，实现逻辑交给子类。
 *   比如：会员系统中，每个商家都会有一些营销活动，需要推送某种信息给会员，但是不同的商家推送的内容可能不同，有些需要推送优惠券，有些需要积分通知。
 */
public abstract class AbstractPushTemplate {

    public void push(int customerId, String shopName) {
        System.out.println("准备推送...");
        execute(customerId, shopName);
        System.out.println("推送完成\n");
    }

    abstract protected void execute(int customerId, String shopName);
}
